Telegram Group & Telegram Channel
⚙️ Как проверить, что WeakReference «отпустила» объект

В .NET слабые ссылки позволяют ссылаться на объект, не препятствуя сборщику мусора его удалить. Это полезно в кэшах, пулах объектов и других случаях, где важно избегать утечек памяти.

Но как проверить, что объект удаляется?

Можно использовать пример:
class MyObject
{
~MyObject()
{
Console.WriteLine("MyObject был удалён сборщиком мусора");
}
}

class Program
{
static void Main()
{
WeakReference weakRef = test();

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

Console.WriteLine("После сборки мусора: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
}

static WeakReference test() {
var obj = new MyObject();
WeakReference weakRef = new WeakReference(obj);
Console.WriteLine("До удаления ссылки: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
return weakRef;
}
}


IsAlive показывает, жив ли объект.

GC.Collect() + GC.WaitForPendingFinalizers() заставляют сборщик мусора немедленно освободить неиспользуемые объекты.

• Деструктор ~MyObject() позволяет наглядно убедиться, что объект удалён.

Метод IsAlive может показывать, что объект жив даже после GC.Collect(), если объект ещё не финализирован или находится в очереди на финализацию.

Для надёжности можно использовать TryGetTarget вместо IsAlive.

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/csharpproglib/5856
Create:
Last Update:

⚙️ Как проверить, что WeakReference «отпустила» объект

В .NET слабые ссылки позволяют ссылаться на объект, не препятствуя сборщику мусора его удалить. Это полезно в кэшах, пулах объектов и других случаях, где важно избегать утечек памяти.

Но как проверить, что объект удаляется?

Можно использовать пример:

class MyObject
{
~MyObject()
{
Console.WriteLine("MyObject был удалён сборщиком мусора");
}
}

class Program
{
static void Main()
{
WeakReference weakRef = test();

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

Console.WriteLine("После сборки мусора: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
}

static WeakReference test() {
var obj = new MyObject();
WeakReference weakRef = new WeakReference(obj);
Console.WriteLine("До удаления ссылки: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
return weakRef;
}
}


IsAlive показывает, жив ли объект.

GC.Collect() + GC.WaitForPendingFinalizers() заставляют сборщик мусора немедленно освободить неиспользуемые объекты.

• Деструктор ~MyObject() позволяет наглядно убедиться, что объект удалён.

Метод IsAlive может показывать, что объект жив даже после GC.Collect(), если объект ещё не финализирован или находится в очереди на финализацию.

Для надёжности можно использовать TryGetTarget вместо IsAlive.

🐸Библиотека шарписта #буст

BY Библиотека шарписта | C#, F#, .NET, ASP.NET




Share with your friend now:
tg-me.com/csharpproglib/5856

View MORE
Open in Telegram


Библиотека шарписта | C F NET ASP NET Telegram | DID YOU KNOW?

Date: |

Should I buy bitcoin?

“To the extent it is used I fear it’s often for illicit finance. It’s an extremely inefficient way of conducting transactions, and the amount of energy that’s consumed in processing those transactions is staggering,” the former Fed chairwoman said. Yellen’s comments have been cited as a reason for bitcoin’s recent losses. However, Yellen’s assessment of bitcoin as a inefficient medium of exchange is an important point and one that has already been raised in the past by bitcoin bulls. Using a volatile asset in exchange for goods and services makes little sense if the asset can tumble 10% in a day, or surge 80% over the course of a two months as bitcoin has done in 2021, critics argue. To put a finer point on it, over the past 12 months bitcoin has registered 8 corrections, defined as a decline from a recent peak of at least 10% but not more than 20%, and two bear markets, which are defined as falls of 20% or more, according to Dow Jones Market Data.

The global forecast for the Asian markets is murky following recent volatility, with crude oil prices providing support in what has been an otherwise tough month. The European markets were down and the U.S. bourses were mixed and flat and the Asian markets figure to split the difference.The TSE finished modestly lower on Friday following losses from the financial shares and property stocks.For the day, the index sank 15.09 points or 0.49 percent to finish at 3,061.35 after trading between 3,057.84 and 3,089.78. Volume was 1.39 billion shares worth 1.30 billion Singapore dollars. There were 285 decliners and 184 gainers.

Библиотека шарписта | C F NET ASP NET from ms


Telegram Библиотека шарписта | C#, F#, .NET, ASP.NET
FROM USA